home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!cs.odu.edu!Amiga-Request
- From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i103: CShell 4.01A - alternative command interface, Part01/04
- Message-ID: <11770@xanth.cs.odu.edu>
- Date: 13 Mar 90 00:44:59 GMT
- Sender: news@cs.odu.edu
- Reply-To: page@Eng.Sun.COM (Bob Page)
- Lines: 2261
- Approved: tadguy@cs.odu.edu (Tad Guy)
- X-Mail-Submissions-To: Amiga@cs.odu.edu
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: page@Eng.Sun.COM (Bob Page)
- Posting-number: Volume 90, Issue 103
- Archive-name: unix/cshell-4.01a/part01
-
- Shell provides a convient AmigaDos alternative command interface. All
- its commands are internal and thus does not rely on the c: commands
- for any functionality.
-
- New to 4.01A:
-
- - This version features mostly bug fixes and corrections:
- * Window title is restored after quitting.
- * rxrec now answers to the 'bye' message.
- * rpn can now be redirected and piped; however, this causes
- some problem (see rpn for info).
- * resident list now works with ARP 1.3. To recompile source, you must
- modify include file "libraries/arpbase.h".
- Change definition of rpn_Usage in struct ResidentProgramNode from LONG
- to WORD.
- * pri no more assumes 20 CLI maximum.
- * you can now split long lines in source files even into more than 2 lines.
- - Added much info in this doc about source files (chapter XI)
- - Added copyright notice (see under restrictions).
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 4)."
- # Contents: src src/comm3.c src/globals.c src/main.c src/makefile
- # src/rawconsole.c src/run.c src/set.c src/shell.h
- # src/shellfunctions.h
- # Wrapped by tadguy@xanth on Mon Mar 12 19:44:24 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test ! -d 'src' ; then
- echo shar: Creating directory \"'src'\"
- mkdir 'src'
- fi
- if test -f 'src/comm3.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/comm3.c'\"
- else
- echo shar: Extracting \"'src/comm3.c'\" \(12254 characters\)
- sed "s/^X//" >'src/comm3.c' <<'END_OF_FILE'
- X/*
- X * COMM3.C
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- Xdo_assign() {
- Xswitch(ac) {
- X case 1: assignlist();
- X break;
- X case 2: doassign(av[1], NULL);
- X break;
- X case 3: doassign(av[1], av[2]);
- X break;
- X default: ierror(NULL, 500);
- X break;
- X }
- Xreturn 0;
- X}
- X
- Xchar *assign_errors[4]={
- X "",
- X "Name %s is not valid\n",
- X "Weird error\n",
- X "Can't cancel %s\n"
- X };
- X
- Xdoassign(log, phy)
- Xchar *log, *phy;
- X{
- Xint last=strlen(log) - 1;
- X
- Xif (log[last] != ':') fprintf(stderr, "Bad name %s\n", log);
- Xelse {
- X log[last] = 0;
- X fprintf(stderr,assign_errors[Assign(log, phy)],phy);
- X }
- X}
- X
- Xassignlist()
- X{
- Xstruct DirectoryEntry *de_head=NULL, *de;
- Xchar buf[256];
- XBPTR lock;
- Xint ctr=0;
- X
- XAddDADevs(&de_head, DLF_DEVICES | DLF_VOLUMES | DLF_DIRS);
- Xprintf("Devices:\n");
- Xfor (de=de_head; de && de->de_Type==DLX_DEVICE; de=de->de_Next) {
- X printf("%-8s",de->de_Name);
- X if (ctr++ == 5) { ctr=0; printf("\n"); }
- X }
- Xprintf("\n\nVolumes:\n");
- Xfor ( ;
- X de && (de->de_Type==DLX_VOLUME || de->de_Type==DLX_UNMOUNTED);
- X de=de->de_Next
- X )
- X printf( "%-16s %s\n",
- X de->de_Name,
- X de->de_Type == DLX_VOLUME ? "[Mounted]" : ""
- X );
- Xprintf("\nDirectories:\n");
- Xfor (; de && de->de_Type==DLX_ASSIGN; de=de->de_Next) {
- X if (lock=Lock(de->de_Name, ACCESS_READ)) {
- X PathName(lock, buf, 256L);
- X UnLock(lock);
- X }
- X else
- X strcpy(buf,"Unexisting lock");
- X printf("%-20s%s\n",de->de_Name,buf);
- X }
- XFreeDAList(&de_head);
- X}
- X
- Xdo_join()
- X{
- XBPTR sou, dest;
- Xchar *buffer;
- Xunsigned int i;
- Xlong n;
- Xchar *namedest=av[--ac];
- X
- Xget_opt("r", &i);
- Xif (options==0 && exists(namedest)) { ierror(namedest,203); return 20; }
- Xif ( (buffer=malloc(8192)) == NULL ) { ierror(NULL,103); return 20; }
- Xif ( (dest=Open(namedest, MODE_NEWFILE)) == NULL )
- X { pError(namedest); goto fail1; }
- Xfor (i=1; i<ac; i++) {
- X if ( (sou=Open(av[i], MODE_OLDFILE)) == NULL ) pError(av[i]);
- X else
- X while( (n=Read(sou, buffer, 8192L)) > 0 )
- X if (Write(dest, buffer, n) != n)
- X { pError(namedest); Close(sou); goto fail2; }
- X Close(sou);
- X }
- Xfail2:
- X Close(dest);
- Xfail1:
- X free(buffer);
- X return 0;
- X}
- X
- X#define BUFDIM 512L
- X#define MAXSTR 256
- X
- Xint minstr;
- X
- Xstrings_in_file(s)
- Xchar *s;
- X{
- Xchar c;
- Xchar readbuf[BUFDIM+1], strbuf[MAXSTR+1];
- Xregister unsigned int i, strctr=0;
- XBPTR fh;
- Xint out, n;
- X
- Xif ( fh=Open(s, MODE_OLDFILE) ) {
- X fprintf(stderr, "Strings in %s (len>=%d):\n",s,minstr);
- X while ( (n=(int)Read(fh, readbuf, BUFDIM)) > 0 && !CHECKBREAK() )
- X for (i=0; i<n; i++) {
- X c=readbuf[i];
- X if (c<0x20 || c>0x7f) {
- X out=(strctr>=minstr);
- X if (!out) strctr=0;
- X }
- X else {
- X strbuf[strctr++]=c;
- X out=(strctr>=BUFDIM);
- X }
- X if (out) {
- X strbuf[strctr]='\0';
- X puts(strbuf);
- X strctr=0;
- X }
- X }
- X Close(fh);
- X }
- Xelse pError(s);
- X}
- X
- Xdo_strings()
- X{
- Xminstr=myatoi(av[--ac],1,255);
- Xall_args("r", strings_in_file, 0);
- Xreturn 0;
- X}
- X
- XBPTR myfile[MAXMYFILES];
- X
- Xdo_open()
- X{
- Xlong mode;
- Xunsigned int n;
- X
- Xswitch (toupper(av[2][0])) {
- X case 'R': mode=MODE_OLDFILE; break;
- X case 'W': mode=MODE_NEWFILE; break;
- X default : ierror(NULL,500); return;
- X }
- Xn=(unsigned int)myatoi(av[3],0,MAXMYFILES-1); if (atoierr) return 20;
- Xif (myfile[n]) myclose(n);
- Xmyfile[n]=Open(av[1],mode);
- Xreturn (myfile[n]==NULL);
- X}
- X
- Xdo_close()
- X{
- Xregister unsigned int i;
- Xint n;
- X
- Xif (ac==1)
- X for (i=1; i<MAXMYFILES; i++)
- X myclose(i);
- Xfor (i=1; i<ac; i++) {
- X n=myatoi(av[i],0,MAXMYFILES-1); if (atoierr) return 20;
- X myclose(n);
- X }
- Xreturn 0;
- X}
- X
- Xmyclose(n)
- X{
- Xif (myfile[n]) { Close(myfile[n]); myfile[n]=NULL; }
- X}
- X
- Xdo_fileslist()
- X{
- Xregister unsigned short i;
- Xint flag=0;
- X
- Xprintf("Open files:");
- Xfor (i=0; i<MAXMYFILES; i++)
- X if (myfile[i]) { printf(" %d",i); flag=1; }
- Xif (!flag) printf(" None!");
- Xprintf("\n");
- Xreturn 0;
- X}
- X
- XBPTR extOpen(name,mode)
- Xchar *name;
- Xlong mode;
- X{
- Xif (name[0]=='.') return myfile[atoi(name+1)];
- Xreturn Open(name,mode);
- X}
- X
- XextClose(fh)
- XBPTR fh;
- X{
- Xregister unsigned short i;
- X
- Xfor (i=0; i<MAXMYFILES; i++)
- X if (myfile[i]==fh) return;
- XClose(fh);
- X}
- X
- Xdo_basename()
- X{
- Xset_var(LEVEL_SET, av[1], BaseName(av[2]));
- Xreturn 0;
- X}
- X
- Xdo_tackon()
- X{
- Xchar buf[256];
- X
- Xstrcpy(buf, av[2]);
- XTackOn(buf, av[3]);
- Xset_var(LEVEL_SET, av[1], buf);
- Xreturn 0;
- X}
- X
- Xdo_resident()
- X{
- Xunsigned int i;
- Xregister struct ResidentProgramNode *p;
- Xchar buf[256];
- X
- Xget_opt("ard", &i);
- Xif (options==0 && ac>1) options=1;
- Xswitch (options) {
- X case 0:
- X ObtainSemaphore (& (ArpBase->ResPrgProtection) );
- X if (p=ArpBase->ResidentPrgList) {
- X printf("Name Users Access\n");
- X for (; p; p=p->rpn_Next)
- X printf("%-17s%5d%6d\n",
- X p->rpn_Name, p->rpn_Usage, p->rpn_AccessCnt);
- X }
- X else printf("No resident program(s)\n");
- X ReleaseSemaphore(& (ArpBase->ResPrgProtection) );
- X break;
- X case 1:
- X for (; i<ac; i++)
- X if (loadres(av[i]))
- X printf("OK! %s is now resident\n", BaseName(av[i]));
- X else pError(av[i]);
- X break;
- X case 2:
- X for (; i<ac; i++)
- X if (RemResidentPrg(av[i])) ierror(av[i],202);
- X else printf("Removed %s\n",av[i]);
- X break;
- X case 4:
- X for (; i<ac; i++) {
- X sprintf(buf,"res_%s",av[i]);
- X Setenv(buf,"1");
- X }
- X break;
- X default:
- X ierror(NULL,500);
- X break;
- X }
- Xreturn 0;
- X}
- X
- Xint loadres(s)
- Xchar *s;
- X{
- XBPTR seg;
- X
- Xif (seg=(BPTR)LoadPrg(s)) AddResidentPrg(seg,BaseName(s));
- Xreturn (seg != NULL);
- X}
- X
- Xstruct ProcessControlBlock pcb={
- X 4000, /* pcb_StackSize */
- X 0, /* pcb_Pri */
- X };
- X/* remaining field are NULL */
- X
- Xdo_truerun(avline, backflag)
- Xchar *avline;
- X{
- Xchar name[200];
- Xchar *FindIt();
- X
- Xif (backflag) {
- X pcb.pcb_Control=NULL;
- X pcb.pcb_Input=pcb.pcb_Output=Open("NIL:",MODE_OLDFILE);
- X }
- Xelse {
- X pcb.pcb_Control=NULL;
- X pcb.pcb_Input=pcb.pcb_Output =NULL;
- X }
- Xif (FindIt(av[1], "", name))
- X ASyncRun(name,next_word(next_word(avline)),&pcb);
- Xelse
- X ierror(av[1],205);
- Xreturn 0;
- X}
- X
- Xint exists(name)
- Xchar *name;
- X{
- XBPTR lock;
- X
- Xif (lock=Lock(name,ACCESS_READ)) {
- X UnLock(lock);
- X return 1;
- X }
- Xreturn 0;
- X}
- X
- Xdo_aset()
- X{
- XSetenv(av[1],av[2]);
- Xreturn 0;
- X}
- X
- X#define HTYPELINE 16L
- X
- Xhtype_a_file(s)
- Xchar *s;
- X{
- XBPTR fh;
- Xlong n, filesize=0;
- Xchar buf[HTYPELINE+1];
- Xregister unsigned short i;
- X
- Xif ( (fh=Open(s,MODE_OLDFILE))==NULL ) { pError(s); return 20; }
- Xwhile ( (n=Read(fh,buf,HTYPELINE))>0 && !dobreak()) {
- X printf("%06lx: ",filesize);
- X filesize+=n;
- X for (i=0; i<n; i++) {
- X printf( (i&3) ? "%02x" : " %02x",(int)(unsigned char)buf[i]);
- X if (buf[i]<0x20) buf[i]='.';
- X }
- X for ( ; i<HTYPELINE; i++) {
- X printf( (i&3) ? " " : " ");
- X buf[i]=' ';
- X }
- X buf[i]=0;
- X printf(" %s\n",buf);
- X }
- XClose(fh);
- Xreturn 0;
- X}
- X
- Xdo_htype()
- X{
- Xall_args("", htype_a_file, 0);
- Xreturn 0;
- X}
- X
- Xdo_stack()
- X{
- Xlong n;
- X
- Xif (ac>1) {
- X n=Atol(av[1]);
- X if (!IoErr()) Mycli->cli_DefaultStack=(long)(n >> 2L);
- X }
- Xelse printf("current stack size is %ld bytes\n",
- X (long)Mycli->cli_DefaultStack << 2L);
- Xreturn 0;
- X}
- X
- Xdo_fault()
- X{
- Xstruct PERROR *p;
- Xregister unsigned int i;
- Xint n;
- X
- Xfor (i=1; i<ac; i++) {
- X n=myatoi(av[i],0,32767);
- X if (!atoierr) {
- X for (p=Perror; p->errnum && p->errnum!=n; p++);
- X if (p->errnum)
- X printf("Fault %d: %s\n",n,p->errstr);
- X else
- X printf("Fault %d not recognized\n",n);
- X }
- X }
- Xreturn 0;
- X}
- X
- Xstruct rpncommand {
- X char *str;
- X int parsin, parsout;
- X };
- X
- Xstruct rpncommand rpn[]={
- X "+", 2, 1,
- X "-", 2, 1,
- X "*", 2, 1,
- X "/", 2, 1,
- X "%", 2, 1,
- X "&", 2, 1,
- X "|", 2, 1,
- X "~", 1, 1,
- X ">", 2, 1,
- X "<", 2, 1,
- X "==", 2, 1,
- X "!", 1, 1,
- X "DUP", 1, 2,
- X "DROP", 1, 0,
- X "SWAP", 2, 2,
- X "HELP", 0, 0,
- X NULL, 0, 1, /* this looks for a number */
- X};
- X
- Xdo_rpn(garbage,ifflag) /* ifflag!=0 if called from if */
- Xchar *garbage;
- X{
- Xregister long n0, n1;
- Xlong t;
- Xunsigned int i, j;
- Xint sp=0;
- Xlong stack[100];
- Xstruct rpncommand *temp;
- X
- Xi=1;
- Xif (ifflag) get_opt("rn",&i);
- Xfor (; i<ac; i++) {
- X for (j=0; rpn[j].str && Strcmp(rpn[j].str,av[i]); j++) ;
- X n0=stack[sp-1];
- X n1=stack[sp-2];
- X sp -= (rpn[j].parsin);
- X if (sp<0) { fprintf(stderr, "RPN: Empty stack\n"); return 1; }
- X switch (j) {
- X case 0: n0 += n1; break;
- X case 1: n0 = n1-n0; break;
- X case 2: n0 *= n1; break;
- X case 3: n0 = n1/n0; break;
- X case 4: n0 = n1%n0; break;
- X case 5: n0 &= n1; break;
- X case 6: n0 |= n1; break;
- X case 7: n0 = ~n0; break;
- X case 8: n0 = (n1 > n0); break;
- X case 9: n0 = (n1 < n0); break;
- X case 10: n0 = (n0 == n1); break;
- X case 11: n0 = !n0; break;
- X case 12: n1=n0; break;
- X case 13: t=n0; n0=n1; n1=t; break;
- X case 14: break;
- X case 15: printf("In Commands Out\n");
- X for (temp=rpn; temp->str; temp++)
- X printf(" %d %-10s%d\n",
- X temp->parsin,temp->str,temp->parsout);
- X break;
- X default: n0=Atol(av[i]);
- X if (IoErr()) {
- X fprintf(stderr, "Bad RPN cmd: %s\n",av[i]);
- X return 20;
- X }
- X break;
- X }
- X stack[sp]=n0;
- X stack[sp+1]=n1;
- X sp += rpn[j].parsout;
- X }
- Xif (ifflag) return (int)(stack[sp-1]); /* called from if: return top value */
- Xfor (i=sp-1;(int)i>=0;i--) printf("%ld\n", stack[i]); /* else print stack */
- Xreturn 0;
- X}
- X
- Xdo_path()
- X{
- Xunion { long *lp; long ll; } l;
- Xchar buf[256];
- X
- Xputs("Current dir");
- Xl.lp = (long *) Mycli->cli_CommandDir;
- Xwhile (l.ll) {
- X l.ll <<= 2;
- X PathName(l.lp[1], buf, 256L);
- X puts(buf);
- X l.ll = *l.lp;
- X }
- Xputs("C:");
- Xreturn 0;
- X}
- X
- Xdo_pri()
- X{
- Xint t, pri;
- Xstruct Process *proc;
- X
- Xt=(int)(long)FindCLI(0L);
- Xt=myatoi(av[1],0,t); if (atoierr) return 20;
- Xpri=myatoi(av[2],-128,127); if (atoierr) return 20;
- XForbid();
- Xproc=(t==0 ? Myprocess : FindCLI((long)t));
- Xif (proc==NULL) fprintf(stderr, "process not found\n");
- X else SetTaskPri(proc, (long)pri);
- XPermit();
- Xreturn 0;
- X}
- X
- Xdo_strleft()
- X{
- Xchar buf[256];
- Xint n;
- X
- Xstrcpy(buf,av[2]);
- Xn=myatoi(av[3],1,strlen(buf)); if (atoierr) return 20;
- Xbuf[n]='\0';
- Xset_var(LEVEL_SET, av[1], buf);
- Xreturn 0;
- X}
- X
- Xdo_strright()
- X{
- Xchar buf[256];
- Xint n;
- X
- Xstrcpy(buf, av[2]);
- Xn=myatoi(av[3],1,strlen(buf)); if (atoierr) return 20;
- Xset_var(LEVEL_SET, av[1], buf+strlen(buf)-n);
- Xreturn 0;
- X}
- X
- Xdo_strmid()
- X{
- Xchar buf[256];
- Xint n1, n2;
- X
- Xstrcpy(buf, av[2]);
- Xn1=myatoi(av[3],1,strlen(buf))-1; if (atoierr) return 20;
- Xif (ac>4) {
- X n2=myatoi(av[4],1,strlen(buf)-n1); if (atoierr) return 20;
- X buf[n1+n2]='\0';
- X }
- Xset_var(LEVEL_SET, av[1], buf+n1);
- Xreturn 0;
- X}
- X
- Xdo_strlen()
- X{
- Xchar buf[16];
- X
- Xsprintf(buf,"%d",strlen(av[2]));
- Xset_var(LEVEL_SET, av[1], buf);
- Xreturn 0;
- X}
- X
- Xint atoierr;
- X
- Xmyatoi(s,min,max)
- Xchar *s;
- X{
- Xint n;
- X
- Xn=(int)(long)Atol(s);
- Xif (atoierr=IoErr())
- X ierror(s,511);
- X else if (n<min || n>max) {
- X atoierr=1;
- X printf("%s(%d) not in (%d,%d)\n",s,n,min,max);
- X }
- Xreturn n;
- X}
- X
- Xdo_fltlower()
- X{
- Xchar buf[256], *s;
- X
- Xwhile (!CHECKBREAK() && gets(buf)) {
- X for (s=buf; *s; s++) *s=tolower(*s);
- X puts(buf);
- X }
- Xreturn 0;
- X}
- X
- Xdo_fltupper()
- X{
- Xchar buf[256], *s;
- X
- Xwhile (!CHECKBREAK() && gets(buf)) {
- X for (s=buf; *s; s++) *s=toupper(*s);
- X puts(buf);
- X }
- Xreturn 0;
- X}
- X
- X#define RXFB_RESULT 17
- X
- Xstatic struct rexxmsg {
- X struct Message cm_Node;
- X LONG RFU1;
- X LONG RFU2;
- X LONG rm_Action;
- X LONG rm_Result1;
- X LONG rm_Result2;
- X char *cm_Args[16];
- X LONG RFU7;
- X LONG RFU8;
- X LONG RFU9;
- X LONG RFU10;
- X LONG RFU11;
- X LONG RFU12;
- X} mymsg;
- X
- Xdo_rxsend()
- X{
- Xint i=1, resflag;
- Xchar *result;
- Xstruct MsgPort *port, *reply;
- Xlong len;
- X
- Xget_opt("r", &i);
- Xresflag=options;
- Xif (!(port = FindPort(av[i++]))) { fprintf(stderr, "No port %s!\n", av[--i]); return 20; }
- Xmymsg.cm_Node.mn_Node.ln_Type = NT_MESSAGE;
- Xmymsg.cm_Node.mn_Length = sizeof(struct rexxmsg);
- Xmymsg.rm_Action = (resflag ? 1L << RXFB_RESULT : 0);
- Xif (!(reply = CreatePort(NULL, 0L))) {
- X fprintf(stderr, "No reply port\n");
- X return 20;
- X }
- Xmymsg.cm_Node.mn_ReplyPort = reply;
- X
- Xfor ( ; i<ac; i++) {
- X mymsg.cm_Args[0] = av[i];
- X mymsg.rm_Result2 = 0; /* clear out the last result. */
- X PutMsg(port, &mymsg.cm_Node);
- X WaitPort(reply);
- X
- X if (resflag) {
- X result=(char *)mymsg.rm_Result2;
- X len=*( (long *)(result-4) );
- X if (len<0 || len>256)
- X fprintf(stderr, "Risultato troppo lungo\n");
- X else
- X printf("%s\n", result);
- X FreeMem(result, len);
- X }
- X }
- X
- Xif (reply) DeletePort(reply);
- Xreturn 0;
- X}
- X
- Xdo_rxrec()
- X{
- Xstruct MsgPort *port;
- Xstruct rexxmsg *msg;
- Xchar *portname, *str;
- X
- Xif (ac > 1)
- X portname=av[1];
- Xelse
- X portname="rexx_csh";
- X
- Xport=CreatePort(portname, 0L);
- Xif (port==NULL) {
- X fprintf(stderr, "Can't have MsgPort %s\n", portname);
- X return 20;
- X }
- Xfor (;;) {
- X WaitPort(port);
- X while (msg=(struct rexxmsg *)GetMsg(port)) {
- X if ( ! Strcmp(msg->cm_Args[0], "bye")) {
- X ReplyMsg((struct Message *)msg);
- X DeletePort(port);
- X return 0;
- X }
- X exec_command(msg->cm_Args[0]);
- X if (msg->rm_Action & (1L << RXFB_RESULT)) {
- X str = get_var(LEVEL_SET, v_lasterr);
- X msg->rm_Result2=(str) ? atoi(str) : 20;
- X }
- X ReplyMsg((struct Message *)msg);
- X }
- X }
- X}
- END_OF_FILE
- if test 12254 -ne `wc -c <'src/comm3.c'`; then
- echo shar: \"'src/comm3.c'\" unpacked with wrong size!
- fi
- # end of 'src/comm3.c'
- fi
- if test -f 'src/globals.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/globals.c'\"
- else
- echo shar: Extracting \"'src/globals.c'\" \(3551 characters\)
- sed "s/^X//" >'src/globals.c' <<'END_OF_FILE'
- X
- X/*
- X * GLOBALS.C
- X *
- X * (c)1986 Matthew Dillon 9 October 1986
- X *
- X * Version 2.07M by Steve Drew 10-Sep-87
- X *
- X * Most global variables.
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- Xchar v_titlebar []="_titlebar"; /* Window title */
- Xchar v_prompt []="_prompt"; /* your prompt (ascii command) */
- Xchar v_hist []="_history"; /* set history depth (value) */
- Xchar v_histnum []="_histnum"; /* set history numbering var */
- Xchar v_debug []="_debug"; /* set debug mode */
- Xchar v_verbose []="_verbose"; /* set verbose for source files */
- Xchar v_stat []="_maxerr"; /* worst return value to date */
- Xchar v_lasterr []="_lasterr"; /* return value from last comm. */
- Xchar v_cwd []="_cwd"; /* current directory */
- Xchar v_except []="_except"; /* "nnn;command" */
- Xchar v_passed []="_passed"; /* passed arguments to source file */
- Xchar v_path []="_path"; /* search path for external commands */
- Xchar v_gotofwd []="_gtf"; /* set name for fwd goto name */
- Xchar v_linenum []="_linenum"; /* name for forline line # */
- X
- Xstruct HIST *H_head, *H_tail; /* HISTORY lists */
- X
- Xstruct PERROR Perror[]= { /* error code->string */
- X 103, "Insufficient free storage",
- X 105, "Task table full",
- X 120, "Argument line invalid or too long",
- X 121, "File is not an object module",
- X 122, "Invalid resident library during load",
- X 201, "No default directory",
- X 202, "Object in use",
- X 203, "Object already exists",
- X 204, "Directory not found",
- X 205, "Object not found",
- X 206, "Bad stream name",
- X 207, "Object too large",
- X 209, "Action not known",
- X 210, "Invalid stream component name",
- X 211, "Invalid object lock",
- X 212, "Object not of required type",
- X 213, "Disk not validated",
- X 214, "Disk write protected",
- X 215, "Rename across devices",
- X 216, "Directory not empty",
- X 217, "Too many levels",
- X 218, "Device not mounted",
- X 219, "Seek error",
- X 220, "Comment too long",
- X 221, "Disk full",
- X 222, "File delete protected",
- X 223, "File write protected",
- X 224, "File read protected",
- X 225, "Not a DOS disk",
- X 226, "No disk",
- X
- X /* custom error messages */
- X
- X 500, "Bad arguments",
- X 501, "Label not found",
- X 502, "Must be within source file",
- X 503, "Syntax Error",
- X 504, "Redirection error",
- X 505, "Pipe error",
- X 506, "Too many arguments",
- X 507, "Destination not a directory",
- X 508, "Cannot mv a filesystem",
- X 509, "Error in command name",
- X 510, "Bad drive name",
- X 511, "Illegal number",
- X 0, NULL
- X};
- X
- Xchar *av[MAXAV]; /* Internal argument list */
- Xlong Src_base[MAXSRC]; /* file pointers for source files */
- Xlong Src_pos[MAXSRC]; /* seek position storage for same */
- Xchar If_base[MAXIF]; /* If/Else stack for conditionals */
- Xint H_len, H_tail_base; /* History associated stuff */
- Xint H_stack; /* AddHistory disable stack */
- Xint E_stack; /* Exception disable stack */
- Xint Src_stack, If_stack; /* Stack Indexes */
- Xint forward_goto; /* Flag for searching for foward lables */
- Xint ac; /* Internal argc */
- Xint debug; /* Debug mode */
- Xint disable; /* Disable com. execution (conditionals)*/
- Xint Verbose; /* Verbose mode for source files */
- Xint Lastresult; /* Last return code */
- Xint Exec_abortline; /* flag to abort rest of line */
- Xint Quit; /* Quit flag */
- Xlong Cout, Cin; /* Current input and output file handles*/
- Xlong Cout_append; /* append flag for Cout */
- Xchar *Cin_name, *Cout_name; /* redirection input/output name or NULL*/
- Xchar *Pipe1, *Pipe2; /* the two pipe temp. files */
- Xstruct Process *Myprocess;
- Xstruct CommandLineInterface *Mycli;
- Xint S_histlen = 20; /* Max # history entries */
- Xunsigned int options;
- END_OF_FILE
- if test 3551 -ne `wc -c <'src/globals.c'`; then
- echo shar: \"'src/globals.c'\" unpacked with wrong size!
- fi
- # end of 'src/globals.c'
- fi
- if test -f 'src/main.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/main.c'\"
- else
- echo shar: Extracting \"'src/main.c'\" \(4978 characters\)
- sed "s/^X//" >'src/main.c' <<'END_OF_FILE'
- X/*
- X * MAIN.C
- X *
- X * Matthew Dillon, 24 Feb 1986
- X * (c)1986 Matthew Dillon 9 October 1986
- X *
- X * Version 2.07M by Steve Drew 10-Sep-87
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- Xchar shellname[]="Shell V4.01A";
- Xchar shellctr []="CshCounter";
- X
- Xint aux; /* for use with aux: driver */
- Xchar *oldtitle;
- Xchar trueprompt[100];
- Xchar Inline[260];
- Xstruct IntuitionBase *IntuitionBase;
- Xstruct Window *w;
- Xstruct ArpBase *ArpBase;
- X
- Xmain(argc, argv)
- Xregister char *argv[];
- X{
- X#if RAW_CONSOLE
- X char *rawgets();
- X#endif
- X
- Xregister unsigned int i;
- Xextern int Enable_Abort;
- Xchar buf[10];
- Xstatic char pipe1[32], pipe2[32];
- Xstruct Window *getwindow();
- X
- XArpBase=(struct ArpBase *)OpenLibrary("arp.library",34L);
- Xif (ArpBase==NULL) { printf("No arp library\n"); exit(0); }
- X
- XForbid();
- Xi=0;
- Xif (Getenv(shellctr,buf,10L)) {
- X i=(int)(long)Atol(buf);
- X if (IoErr()) i=0;
- X }
- Xsprintf(buf,"%d",i+1);
- XSetenv(shellctr,buf);
- XPermit();
- X
- XIntuitionBase=(struct IntuitionBase *)ArpBase->IntuiBase;
- X
- Xstdin->_flags |= 0x80; /* make sure we're set as a tty */
- Xstdout->_flags |= 0x80; /* in case of redirection in .login */
- XClose(_devtab[2].fd);
- X_devtab[2].mode |= O_STDIO;
- X_devtab[2].fd = _devtab[1].fd; /* set stderr to Output() otherwise */
- X /* don't work with aux driver */
- XMyprocess = (struct Process *)FindTask(0L);
- XMycli=(struct CommandLineInterface *)((long)Myprocess->pr_CLI << 2);
- Xw=getwindow();
- X
- Xoldtitle=(char *)(w->Title);
- X
- XPipe1 = pipe1;
- XPipe2 = pipe2;
- Xsprintf(pipe1, "ram:pipe1_%ld", Myprocess);
- Xsprintf(pipe2, "ram:pipe2_%ld", Myprocess);
- X
- Xsprintf(buf,"%ld",Myprocess->pr_TaskNum);
- Xset_var(LEVEL_SET, "_clinumber", buf);
- X
- Xset_var(LEVEL_SET, v_titlebar, shellname);
- Xset_var(LEVEL_SET, v_prompt,
- X (IsInteractive(Input())) ? "\23337m%p> \2330m" : "");
- Xset_var(LEVEL_SET, v_hist, "20");
- Xset_var(LEVEL_SET, v_lasterr, "0");
- Xset_var(LEVEL_SET, v_stat, "0");
- Xset_var(LEVEL_SET, v_path, "RAM:,RAM:c/,df0:c/,df1:c/,sys:system/");
- Xset_var(LEVEL_SET, "_insert", "1");
- Xset_var(LEVEL_SET, "f1", "cdir df0:\15");
- Xset_var(LEVEL_SET, "F1", "cdir df1:\15");
- Xset_var(LEVEL_SET, "f3", "cdir RAM:\15");
- Xset_var(LEVEL_SET, "F3", "cdir vd0:\15");
- Xset_var(LEVEL_SET, "f4", "cd df0:\15");
- Xset_var(LEVEL_SET, "F4", "cd df1:\15");
- Xset_var(LEVEL_SET, "f5", "cls; ls\15");
- Xset_var(LEVEL_SET, "F5", "cdir ");
- Xset_var(LEVEL_SET, "f6", "lc\15");
- Xset_var(LEVEL_SET, "f7", "info\15");
- Xset_var(LEVEL_SET, "F7", "assign \15");
- Xset_var(LEVEL_SET, "f8", "window -lf\15");
- Xset_var(LEVEL_SET, "F8", "window -sb\15");
- Xset_var(LEVEL_SET, "f10", "cls\15");
- Xset_var(LEVEL_SET, "F10", "exit\15");
- Xset_var(LEVEL_ALIAS, "cls", "echo -n ^l");
- Xset_var(LEVEL_ALIAS, "lc", "ls -s");
- Xset_var(LEVEL_ALIAS, "kr", "rm -r RAM:* >NIL:");
- Xset_var(LEVEL_ALIAS, "cdir", "%q cd $q; cls; dir");
- Xset_var(LEVEL_ALIAS, "exit", "endcli;quit");
- Xset_var(LEVEL_ALIAS, "lp", "cat >PRT:");
- Xseterr();
- Xif (Myprocess->pr_CurrentDir == NULL)
- X do_cd("x :");
- Xelse do_pwd(NULL);
- XEnable_Abort = 0;
- X
- Xif (exists(av[1] = "S:.login")) do_source("x S:.login");
- X
- Xfor (i = 1; i < argc; ++i) {
- X if (!strcmp(argv[i],"-c")) {
- X Inline[0] = ' ';
- X Inline[1] = '\0';
- X while (++i < argc)
- X { strcat(Inline,argv[i]); strcat(Inline," "); }
- X exec_command(Inline);
- X main_exit(Lastresult);
- X }
- X if (!strcmp(argv[i],"-a")) { aux = 1; continue; }
- X sprintf (Inline, "source %s",argv[i]);
- X av[1] = argv[i];
- X do_source (Inline);
- X }
- Xfor (;;) {
- X if (breakcheck())
- X while (WaitForChar(Input(), 100L) || stdin->_bp < stdin->_bend)
- X gets(Inline);
- X clearerr(stdin); /* prevent acidental quit */
- X#if RAW_CONSOLE
- X if (Quit || !rawgets(Inline, disable ? "_ " : trueprompt)) main_exit(0);
- X#else
- X printf("%s", disable ? "_ " : trueprompt);
- X fflush(stdout);
- X if (Quit || !gets(Inline)) main_exit(0);
- X#endif
- X breakreset();
- X if (*Inline) exec_command(Inline);
- X }
- X}
- X
- Xmain_exit(n)
- X{
- Xregister unsigned short i;
- Xchar buf[10];
- X
- XGetenv(shellctr,buf,10L);
- Xi=(int)Atol(buf);
- Xsprintf(buf,"%d",i-1);
- XSetenv(shellctr,buf);
- XSetWindowTitles(w,oldtitle,-1L);
- Xfor (i=1; i<MAXMYFILES; i++) myclose((int)i);
- XArpExit(0L,0L); /* Intuition need not to be closed */
- X}
- X
- Xbreakcheck()
- X{
- Xreturn (int)(SetSignal(0L,0L) & SIGBREAKF_CTRL_C);
- X}
- X
- Xbreakreset()
- X{
- XSetSignal(0L, SIGBREAKF_CTRL_C);
- X}
- X
- Xdobreak()
- X{
- Xif (breakcheck()) { printf("^C\n"); return(1); }
- Xreturn(0);
- X}
- X
- X/* this routine causes manx to use this Chk_Abort() rather than it's own */
- X/* otherwise it resets our ^C when doing any I/O (even when Enable_Abort */
- X/* is zero). Since we want to check for our own ^C's */
- X
- XChk_Abort()
- X{
- Xreturn(0);
- X}
- X
- X_wb_parse()
- X{
- X}
- X
- Xdo_howmany()
- X{
- Xchar buf[10];
- X
- XGetenv(shellctr, buf, 10L);
- Xprintf("Shell(s) running: %s\n",buf);
- X}
- X
- Xstruct Window *getwindow()
- X{
- Xstruct InfoData *infodata;
- Xstruct Window *win;
- Xlong args[8];
- X
- Xinfodata=AllocMem((long)sizeof(struct InfoData),MEMF_CLEAR | MEMF_PUBLIC);
- Xargs[0]=(long)infodata >> 2;
- XSendPacket(ACTION_DISK_INFO,args,Myprocess->pr_ConsoleTask);
- Xwin=(struct Window *)infodata->id_VolumeNode;
- XFreeMem(infodata,(long)sizeof(struct InfoData));
- Xreturn win;
- X}
- END_OF_FILE
- if test 4978 -ne `wc -c <'src/main.c'`; then
- echo shar: \"'src/main.c'\" unpacked with wrong size!
- fi
- # end of 'src/main.c'
- fi
- if test -f 'src/makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/makefile'\"
- else
- echo shar: Extracting \"'src/makefile'\" \(1019 characters\)
- sed "s/^X//" >'src/makefile' <<'END_OF_FILE'
- X######################################################################
- X#
- X# Makefile to build Shell 4.01A
- X# by Carlo Borreo & Cesare Dieni 17-Feb-90
- X#
- X######################################################################
- X
- XOBJS = run.o main.o comm1.o comm2.o comm3.o execom.o set.o sub.o \
- X globals.o rawconsole.o
- X
- XINCL = shell.h
- X
- XShell : Shell.syms $(OBJS)
- X ln +q -m -o Shell $(OBJS) -la -lc32
- X
- XShell.syms : $(INCL)
- X cc +L +HShell.syms shell.h -DAZTEC_C
- X
- Xrawconsole.o : rawconsole.c $(INCL)
- X cc +L +IShell.syms rawconsole.c
- X
- Xrun.o : run.c $(INCL)
- X cc +L +IShell.syms run.c
- X
- Xmain.o : main.c $(INCL)
- X cc +L +IShell.syms main.c
- X
- Xcomm1.o : comm1.c $(INCL)
- X cc +L +IShell.syms comm1.c
- X
- Xcomm2.o : comm2.c $(INCL)
- X cc +L +IShell.syms comm2.c
- X
- Xcomm3.o : comm3.c $(INCL)
- X cc +L +IShell.syms comm3.c
- X
- Xset.o : set.c $(INCL)
- X cc +L +IShell.syms set.c
- X
- Xsub.o : sub.c $(INCL)
- X cc +L +IShell.syms sub.c
- X
- Xglobals.o : globals.c $(INCL)
- X cc +L +IShell.syms globals.c
- X
- Xexecom.o : execom.c $(INCL)
- X cc +L +IShell.syms execom.c
- END_OF_FILE
- if test 1019 -ne `wc -c <'src/makefile'`; then
- echo shar: \"'src/makefile'\" unpacked with wrong size!
- fi
- # end of 'src/makefile'
- fi
- if test -f 'src/rawconsole.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/rawconsole.c'\"
- else
- echo shar: Extracting \"'src/rawconsole.c'\" \(9156 characters\)
- sed "s/^X//" >'src/rawconsole.c' <<'END_OF_FILE'
- X/*
- X * RawConsole.c
- X *
- X * Shell 2.07M 17-Jun-87
- X * console handling, command line editing support for Shell
- X * using new console packets from 1.2.
- X * Written by Steve Drew. (c) 14-Oct-86.
- X * 16-Dec-86 Slight mods to rawgets() for Disktrashing.
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- X#if RAW_CONSOLE
- X
- Xchar *tyahdptr;
- X
- Xmyget()
- X{
- Xif (*tyahdptr) return *tyahdptr++;
- Xreturn getchar();
- X}
- X
- Xextern int aux; /* for use with aux: */
- X
- X#define SETRAW setrawcon(-1L);
- X#define SETCON setrawcon(0L);
- X
- Xint width;
- X
- Xnewwidth()
- X{
- Xextern struct Window *w;
- X
- Xwidth=(w->Width- (w->BorderLeft + w->BorderRight)) / w->RPort->TxWidth;
- X}
- X
- Xchar *rawgets(line,prompt)
- Xchar *line, *prompt;
- X{
- Xchar *get_var();
- Xchar *gets();
- Xregister int n, pl;
- Xregister int max, i;
- Xunsigned char c1,c2,c3;
- Xchar fkeys[5];
- Xchar *s;
- Xchar *ps;
- Xchar typeahd[256];
- Xint fkey, savn;
- Xint insert = 1;
- Xint recall = -1;
- Xstruct HIST *hist;
- X
- Xnewwidth();
- X
- Xif (aux) {
- X printf("%s",prompt);
- X fflush(stdout);
- X }
- Xif (!IsInteractive(Input()) || aux ) return(gets(line));
- Xif (WaitForChar((long)Input(), 100L) || /* don't switch to 1L ...*/
- X stdin->_bp < stdin->_bend) { /* else causes read err's*/
- X gets(line);
- X return(line);
- X }
- XSETRAW;
- Xprintf("\015%s\2336n",prompt);
- Xsavn = pl = n = 0;
- Xtyahdptr = typeahd;
- Xwhile((typeahd[n]=getchar()) != 'R') {
- X if ((unsigned char)typeahd[n] == 155) savn = n;
- X n++;
- X }
- X /* typeahd now contains possible type a head chars
- X followed by <CSI> cursor position report.
- X */
- Xtypeahd[savn] = '\0';
- Xif (typeahd[n-2] != ';') pl = (typeahd[n-2] - 48) * 10;
- Xpl += typeahd[n-1] - 49;
- Xps = line + pl;
- Xline[max = i = pl] = '\0';
- X
- Xif (s = get_var (LEVEL_SET, "_insert")) insert = atoi(s) ? 1 : 0;
- X
- Xwhile( (c1 = myget()) != 255) {
- X switch(c1) {
- X case 155:
- X c2 = myget();
- X switch(c2) {
- X case 'A': /* up arrow */
- X n = ++recall;
- X case 'B': /* down arrow */
- X line[pl] = '\0';
- X if (recall >= 0 || c2 == 'A') {
- X if (c2 == 'B') n = --recall;
- X if (recall >= 0) {
- X for(hist = H_head; hist && n--;
- X hist = hist->next);
- X if (hist) strcpy(&line[pl],hist->line);
- X else recall = H_len;
- X }
- X }
- X if (i != pl)
- X printf("\233%dD",i);
- X printf("\015\233J%s%s",prompt,ps);
- X i = max = strlen(ps) + pl;
- X break;
- X case 'C': /* right arrow*/
- X if (i < max) {
- X i++;
- X printf("\233C");
- X }
- X break;
- X case 'D': /* left arrow */
- X if (i > pl) {
- X i--;
- X printf("\233D");
- X }
- X break;
- X case 'T': /* shift-up */
- X n = recall = H_len-1;
- X case 'S': /* shift-down */
- X line[pl] = '\0';
- X if (c2 == 'S') {
- X n = recall = 0;
- X if (H_head) strcpy(&line[pl], H_head->line);
- X }
- X else if (H_tail) strcpy(&line[pl], H_tail->line);
- X printf("\015\233J%s%s", prompt, ps);
- X i = max = strlen(ps) + pl;
- X break;
- X case ' ': /* shift -> <-*/
- X c3 = myget();
- X switch(c3) {
- X case('@'): /* shift -> */
- X while (ps[i-pl-1] == ' ' && i<max) {
- X i++;
- X printf("\233C");
- X }
- X while (ps[i-pl-1] != ' ' && i<max) {
- X i++;
- X printf("\233C");
- X }
- X break;
- X case('A'): /* shift <- */
- X while (ps[i-pl-1] == ' ' && i>pl) {
- X i--;
- X printf("\233D");
- X }
- X while (ps[i-pl-1] != ' ' && i>pl) {
- X i--;
- X printf("\233D");
- X }
- X break;
- X default:
- X break;
- X }
- X break;
- X default:
- X c3 = myget();
- X if (c3 == '~') {
- X fkey = c2;
- X fkeys[0] = 'f';
- X if (c2 == '?') {
- X strcpy(ps,"help");
- X goto done;
- X }
- X }
- X else if (myget() != '~') { /* window was resized */
- X while(myget() != '|');
- X newwidth();
- X break;
- X }
- X else {
- X fkey = c3;
- X fkeys[0] = 'F';
- X }
- X sprintf(fkeys+1,"%d",fkey - 47);
- X if (s = get_var(LEVEL_SET, fkeys))
- X tyahdptr = strcpy(typeahd,s);
- X break;
- X }
- X break;
- X case 8:
- X if (i > pl) {
- X i--;
- X printf("\010");
- X }
- X else break;
- X case 127:
- X if (i < max) {
- X int j,t,l = 0;
- X movmem(&line[i+1],&line[i],max-i);
- X --max;
- X printf("\233P");
- X j = width - i % width - 1; /* amount to end */
- X t = max/width - i/width; /* no of lines */
- X for(n = 0; n < t; n++) {
- X l += j; /* no. of char moved */
- X if (j) printf("\233%dC",j); /* goto eol */
- X printf("%c\233P",line[width*(i/width+n+1)-1]);
- X j = width-1;
- X }
- X if (t)
- X printf("\233%dD",l+t); /* get back */
- X }
- X break;
- X case 18:
- X n = i/width;
- X if (n) printf("\233%dF",n);
- X printf("\015\233J%s%s",prompt,ps);
- X i = max;
- X break;
- X case 27:
- X break;
- X case 1:
- X insert ^= 1;
- X break;
- X case 21:
- X case 24:
- X case 26:
- X if (i>pl) printf("\233%dD",i-pl);
- X i = pl;
- X if (c1 == 26) break;
- X case 11: /* ^K */
- X printf("\233J");
- X max = i;
- X line[i] = '\0';
- X break;
- X case 28: /* ^\ */
- X SETCON;
- X return(NULL);
- X case 5:
- X if (i!=max) printf("\233%dC",max - i);
- X i = max;
- X break;
- X case 10:
- X case 13:
- X line[max] = '\0';
- Xdone: printf("\233%dC\n",max - i);
- X
- X SETCON;
- X strcpy(line, ps);
- X return(line);
- X default:
- X c1 &= 0x7f;
- X if (c1 == 9) c1 = 32;
- X if (c1 > 31 & i < 256) {
- X if (i < max && insert) {
- X int j,t,l = 0;
- X movmem(&line[i], &line[i+1], max - i);
- X printf("\233@%c",c1);
- X t = max/width - i/width;
- X j = width - i % width - 1;
- X for(n = 0; n < t; n++) {
- X l += j;
- X if (j) printf("\233%dC",j);
- X printf("\233@%c",line[width*(i/width+n+1)]);
- X j = width-1;
- X }
- X if (t) printf("\233%dD",l + t);
- X ++max;
- X }
- X else {
- X if(i == pl && max == i) printf("\015%s%s",prompt,ps);
- X putchar(c1);
- X }
- X line[i++] = c1;
- X if (max < i) max = i;
- X line[max] = '\0';
- X }
- X }
- X }
- XSETCON;
- Xreturn(NULL);
- X}
- X
- Xsetrawcon(flag) /* -1L=RAW:, 0L=CON: */
- Xlong flag;
- X{
- Xlong packargs[8];
- X
- Xpackargs[0]=flag;
- XSendPacket(994L, packargs, Myprocess->pr_ConsoleTask);
- X}
- X
- X#endif
- END_OF_FILE
- if test 9156 -ne `wc -c <'src/rawconsole.c'`; then
- echo shar: \"'src/rawconsole.c'\" unpacked with wrong size!
- fi
- # end of 'src/rawconsole.c'
- fi
- if test -f 'src/run.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/run.c'\"
- else
- echo shar: Extracting \"'src/run.c'\" \(1712 characters\)
- sed "s/^X//" >'src/run.c' <<'END_OF_FILE'
- X
- X/*
- X * RUN.C
- X *
- X * (c)1986 Matthew Dillon 9 October 1986
- X *
- X * RUN handles running of external commands.
- X *
- X * Version 2.07M by Steve Drew 10-Sep-87
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- Xchar *FindIt();
- X
- Xdo_run(str)
- Xchar *str;
- X{
- Xint retcode;
- Xchar buf[200]; /* enough space for 100 char cmd name + path stuff */
- Xchar *path, *argline, *trueargline, *copy, *p = av[0];
- X
- Xwhile(*p++) *p &= 0x7F; /* allow "com mand" */
- X
- Xargline=compile_av(av, 1, ac, ' ', 1);
- Xtrueargline= (*argline ? argline : "\n");
- X
- Xif (strlen(av[0]) > 100) { ierror(NULL,509); return -1; }
- X
- Xsprintf(buf,"res_%s",BaseName(av[0]));
- Xif (Getenv(buf, buf+100, 90L) && loadres(av[0])) Setenv(buf,NULL);
- Xretcode=SyncRun(av[0],trueargline,0L,0L);
- Xif (retcode>=0) { free(argline); return retcode; }
- Xif (path = FindIt(av[0],"",buf)) {
- X retcode = SyncRun(path,trueargline,0L,0L);
- X free(argline);
- X return retcode;
- X }
- Xelse free(argline);
- Xif ((path = FindIt(av[0],".sh",buf)) == NULL) {
- X fprintf(stderr,"Command Not Found %s\n",av[0]);
- X return -1;
- X }
- Xav[1] = buf;
- Xcopy = malloc(strlen(str)+3);
- Xsprintf(copy,"x %s",str);
- Xretcode = do_source(copy);
- Xfree(copy);
- Xreturn retcode;
- X}
- X
- Xchar *dofind(cmd, ext, buf)
- Xchar *cmd, *ext, *buf;
- X{
- Xchar *ptr, *s;
- X
- Xsprintf(buf,"%s%s",cmd,ext);
- Xif (exists(buf)) return buf;
- Xif (BaseName(buf)==buf) {
- X s = get_var(LEVEL_SET, v_path);
- X while (*s) {
- X for (ptr=buf; *s && *s!=','; ) *ptr++ = *s++;
- X sprintf(ptr, "%s%s", cmd, ext);
- X if (exists(buf)) return buf;
- X if (*s) s++;
- X }
- X }
- Xreturn NULL;
- X}
- X
- Xchar *FindIt(cmd,ext,buf)
- Xchar *cmd, *ext, *buf;
- X{
- Xchar *response;
- X
- XMyprocess->pr_WindowPtr = (APTR)(-1);
- Xresponse=dofind(cmd,ext,buf);
- XMyprocess->pr_WindowPtr = NULL;
- Xreturn response;
- X}
- END_OF_FILE
- if test 1712 -ne `wc -c <'src/run.c'`; then
- echo shar: \"'src/run.c'\" unpacked with wrong size!
- fi
- # end of 'src/run.c'
- fi
- if test -f 'src/set.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/set.c'\"
- else
- echo shar: Extracting \"'src/set.c'\" \(3884 characters\)
- sed "s/^X//" >'src/set.c' <<'END_OF_FILE'
- X
- X/*
- X * SET.C
- X *
- X * (c)1986 Matthew Dillon 9 October 1986
- X *
- X * Version 2.07M by Steve Drew 10-Sep-87
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- Xextern struct Window *w;
- X
- X#define MAXLEVELS (3 + MAXSRC)
- X
- Xstruct MASTER {
- X struct MASTER *next;
- X struct MASTER *last;
- X char *name;
- X char *text;
- X};
- X
- Xstatic struct MASTER *Mbase[MAXLEVELS];
- X
- Xchar *set_var(level, name, str)
- Xregister char *name, *str;
- X{
- X register struct MASTER *base = Mbase[level];
- X register struct MASTER *last;
- X register int len;
- X
- X for (len = 0; isalphanum(name[len]); ++len);
- X while (base != NULL) {
- X if (strlen(base->name) == len && strncmp (name, base->name, len) == 0) {
- X Free (base->text);
- X goto gotit;
- X }
- X last = base;
- X base = base->next;
- X }
- X if (base == Mbase[level]) {
- X base = Mbase[level] = (struct MASTER *)malloc (sizeof(struct MASTER));
- X base->last = NULL;
- X } else {
- X base = (struct MASTER *)malloc (sizeof(struct MASTER));
- X base->last = last;
- X last->next = base;
- X }
- X base->name = malloc (len + 1);
- X bmov (name, base->name, len);
- X base->name[len] = 0;
- X base->next = NULL;
- Xgotit:
- X base->text = malloc (strlen(str) + 1);
- X strcpy (base->text, str);
- X if (*name=='_') sys_vars();
- X return (base->text);
- X}
- X
- Xchar *get_var (level, name)
- Xregister char *name;
- X{
- X register struct MASTER *base = Mbase[level];
- X register unsigned char *scr;
- X register int len;
- X
- X for (scr = (unsigned char *)name; *scr && *scr != 0x80 && *scr != ' ' && *scr != ';' && *scr != '|'; ++scr);
- X len = scr - name;
- X
- X while (base != NULL) {
- X if (strlen(base->name) == len && strncmp (name, base->name, len) == 0)
- X return (base->text);
- X base = base->next;
- X }
- X return (NULL);
- X}
- X
- Xunset_level(level)
- X{
- X register struct MASTER *base = Mbase[level];
- X
- X while (base) {
- X Free (base->name);
- X Free (base->text);
- X Free (base);
- X base = base->next;
- X }
- X Mbase[level] = NULL;
- X}
- X
- Xunset_var(level, name)
- Xchar *name;
- X{
- X register struct MASTER *base = Mbase[level];
- X register struct MASTER *last = NULL;
- X register int len;
- X
- X for (len = 0; isalphanum(name[len]); ++len);
- X while (base) {
- X if (strlen(base->name) == len && strncmp (name, base->name, len) == 0) {
- X if (base != Mbase[level])
- X last->next = base->next;
- X else
- X Mbase[level] = base->next;
- X if (base->next != NULL)
- X base->next->last = last;
- X if (base == Mbase[level])
- X Mbase[level] = base->next;
- X Free (base->name);
- X Free (base->text);
- X Free (base);
- X return (1);
- X }
- X last = base;
- X base = base->next;
- X }
- X return (-1);
- X}
- X
- Xdo_unset_var(str, level)
- Xchar *str;
- X{
- Xregister unsigned int i;
- X
- Xfor (i = 1; i < ac; ++i) unset_var (level, av[i]);
- Xsys_vars();
- Xreturn 0;
- X}
- X
- Xdo_set_var(command, level)
- Xchar *command;
- X{
- Xregister struct MASTER *base = Mbase[level];
- Xregister char *str;
- X
- Xswitch (ac) {
- Xcase 1:
- X while (base && !dobreak()) {
- X printf ("\2330m%-10s %s\n", base->name, base->text);
- X base = base->next;
- X }
- X break;
- Xcase 2:
- X if (str=get_var(level,av[1])) printf ("%-10s %s\n", av[1], str);
- X break;
- Xdefault:
- X set_var (level, av[1], next_word (next_word (command)));
- X if (*av[1]=='_') sys_vars();
- X break;
- X }
- Xreturn 0;
- X}
- X
- Xsys_vars()
- X{
- Xregister char *str, *t;
- Xextern char trueprompt[100];
- X
- Xif (strcmp(w->Title, str=get_var(LEVEL_SET, v_titlebar)))
- X SetWindowTitles(w, str, -1L);
- XS_histlen=(str = get_var(LEVEL_SET, v_hist)) ? atoi(str) : 0;
- Xdebug =(get_var(LEVEL_SET, v_debug) !=NULL);
- XVerbose=(get_var(LEVEL_SET, v_verbose)!=NULL);
- Xif (S_histlen < 2) S_histlen=2;
- X
- Xif ( (str=get_var(LEVEL_SET,v_prompt)) ==NULL) str="$ ";
- Xt=trueprompt;
- Xwhile (*str)
- X if (*str=='%' && str[1]=='p') {
- X str+=2;
- X strcpy(t,get_var(LEVEL_SET, "_cwd"));
- X t+=strlen(t);
- X }
- X else *t++=*str++;
- Xstrcpy(t,"\2330m");
- X}
- END_OF_FILE
- if test 3884 -ne `wc -c <'src/set.c'`; then
- echo shar: \"'src/set.c'\" unpacked with wrong size!
- fi
- # end of 'src/set.c'
- fi
- if test -f 'src/shell.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/shell.h'\"
- else
- echo shar: Extracting \"'src/shell.h'\" \(3029 characters\)
- sed "s/^X//" >'src/shell.h' <<'END_OF_FILE'
- X
- X/*
- X * SHELL.H
- X *
- X * (c)1986 Matthew Dillon 9 October 1986
- X *
- X *
- X * SHELL include file.. contains shell parameters and extern's
- X *
- X * Version 2.07M by Steve Drew 10-Sep-87
- X *
- X * Version 4.01A by Carlo Borreo & Cesare Dieni 17-Feb-90
- X *
- X */
- X
- X#define RAW_CONSOLE 1 /* Set to 0 to compile out Cmd Line Editing */
- X
- X#include <stdio.h>
- X#include <exec/exec.h>
- X#include <time.h>
- X#include <libraries/dos.h>
- X#include <libraries/dosextens.h>
- X#include <intuition/intuition.h>
- X#include <intuition/intuitionbase.h>
- X#include "shellfunctions.h"
- X#include <fcntl.h>
- X#include <libraries/arpbase.h>
- X
- Xtypedef struct FileInfoBlock FIB;
- X
- X#define bmov movmem
- X
- X#define MAXAV 256 /* Max. # arguments */
- X#define MAXSRC 5 /* Max. # of source file levels */
- X#define MAXIF 10 /* Max. # of if levels */
- X#define MAXALIAS 20 /* Max. # of alias levels */
- X#define MAXMYFILES 9 /* Max. # of internal files */
- X
- X#define LEVEL_SET 0 /* which variable list to use */
- X#define LEVEL_ALIAS 1
- X#define LEVEL_LABEL 2
- X
- X /* EXECOM.C defines */
- X
- X#define FL_DOLLAR 0x01 /* One of the following */
- X#define FL_BANG 0x02
- X#define FL_PERCENT 0x04
- X#define FL_QUOTE 0x08
- X#define FL_IDOLLAR 0x10 /* Any or all of the following may be set */
- X#define FL_EOC 0x20
- X#define FL_EOL 0x40
- X#define FL_OVERIDE 0x80
- X#define FL_WILD 0x100
- X#define FL_MASK (FL_DOLLAR|FL_BANG|FL_PERCENT|FL_QUOTE)
- X
- X#ifndef NULL
- X#define NULL 0L
- X#endif
- X
- X#define CHECKBREAK() dobreak()
- X
- X#ifndef AZTEC_C
- Xstruct _dev {
- X long fd;
- X short mode;
- X };
- X#endif
- X
- Xstruct HIST {
- X struct HIST *next, *prev; /* doubly linked list */
- X char *line; /* line in history */
- X};
- X
- Xstruct PERROR {
- X int errnum; /* Format of global error lookup */
- X char *errstr;
- X};
- X
- Xstruct DPTR { /* Format of directory fetch pointer */
- X BPTR lock; /* lock on directory */
- X FIB *fib; /* mod'd fib for entry */
- X };
- X
- Xextern struct HIST *H_head, *H_tail;
- Xextern struct PERROR Perror[];
- Xextern struct DPTR *dopen();
- Xextern char *set_var(), *get_var(), *next_word();
- Xextern char *get_history(), *compile_av(), *get_pwd();
- Xextern char *malloc(), *strcpy(), *strcat(), *index();
- Xextern char **expand();
- Xextern char *av[];
- Xextern char *Current;
- Xextern int H_len, H_tail_base, H_stack;
- Xextern int E_stack;
- Xextern int Src_stack, If_stack, forward_goto;
- Xextern int ac;
- Xextern int debug, Rval, Verbose, disable, Quit;
- Xextern int Lastresult, atoierr;
- Xextern int Exec_abortline;
- Xextern int S_histlen;
- Xextern unsigned int options;
- Xextern long Cin, Cout, Cout_append;
- Xextern char *Cin_name, *Cout_name;
- Xextern char Cin_type, Cout_type; /* these variables are in transition */
- Xextern char *Pipe1, *Pipe2;
- X
- Xextern long Src_base[MAXSRC];
- Xextern long Src_pos[MAXSRC];
- Xextern char If_base[MAXIF];
- Xextern struct Process *Myprocess;
- Xextern struct CommandLineInterface *Mycli;
- X
- Xextern struct ArpBase *ArpBase;
- X
- Xextern long atol(), Atol(), myatol();
- X
- Xextern char v_titlebar[], v_prompt[], v_hist[], v_histnum[], v_debug[],
- X v_verbose[], v_stat[], v_lasterr[], v_cwd[], v_except[],
- X v_passed[], v_path[], v_gotofwd[], v_linenum[];
- END_OF_FILE
- if test 3029 -ne `wc -c <'src/shell.h'`; then
- echo shar: \"'src/shell.h'\" unpacked with wrong size!
- fi
- # end of 'src/shell.h'
- fi
- if test -f 'src/shellfunctions.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/shellfunctions.h'\"
- else
- echo shar: Extracting \"'src/shellfunctions.h'\" \(9694 characters\)
- sed "s/^X//" >'src/shellfunctions.h' <<'END_OF_FILE'
- Xtypedef long cList;
- Xextern int Enable_Abort;
- X
- Xlong AbleICR();
- Xlong AbortIO();
- Xlong ActivateGadget();
- Xvoid ActivateWindow();
- Xvoid AddAnimOb();
- Xvoid AddBob();
- Xvoid AddConfigDev();
- Xvoid AddDevice();
- Xlong AddDosNode();
- Xvoid AddFont();
- Xvoid AddFreeList();
- Xshort AddGadget();
- Xunsigned short AddGList();
- Xvoid AddHead();
- Xstruct Interrupt * AddICRVector();
- Xvoid AddIntServer();
- Xvoid AddLibrary();
- Xlong AddMemList();
- Xvoid AddPort();
- Xvoid AddResource();
- Xvoid AddSemaphore();
- Xvoid AddTail();
- Xvoid AddTask();
- Xvoid AddTime();
- Xvoid AddVSprite();
- Xlong Alert();
- Xvoid * AllocAbs();
- Xlong AllocBoardMem();
- XcList AllocCList();
- Xstruct ConfigDev * AllocConfigDev();
- Xstruct MemList * AllocEntry();
- Xunsigned long AllocExpansionMem();
- Xvoid * AllocMem();
- Xlong AllocPotBits();
- Xvoid * AllocRaster();
- Xchar * AllocRemember();
- Xlong AllocSignal();
- Xlong AllocTrap();
- Xstruct WBObject * AllocWBObject();
- Xvoid * Allocate();
- Xvoid AlohaWorkbench();
- Xvoid AndRectRegion();
- Xlong AndRegionRegion();
- Xvoid Animate();
- Xshort AreaDraw();
- Xlong AreaEllipse();
- Xvoid AreaEnd();
- Xshort AreaMove();
- Xvoid AskFont();
- Xlong AskSoftStyle();
- Xlong AttemptLockLayerRom();
- Xlong AttemptSemaphore();
- Xshort AutoRequest();
- Xlong AvailFonts();
- Xlong AvailMem();
- Xvoid BeginIO();
- Xvoid BeginRefresh();
- Xvoid BeginUpdate();
- Xvoid BeginLayer();
- Xlong BltBitMap();
- Xlong BltBitMapRastPort();
- Xvoid BltClear();
- Xvoid BltMaskBitMapRastPort();
- Xvoid BltPattern();
- Xvoid BltTemplate();
- Xstruct Window * BuildSysRequest();
- Xchar * BumpRevision();
- Xvoid Cause();
- Xvoid CBump();
- Xstruct Events * CDInputHandler();
- Xvoid ChangeSprite();
- Xstruct IORequest * CheckIO();
- Xshort ClearDMRequest();
- Xvoid ClearEOL();
- Xvoid ClearMenuStrip();
- Xvoid ClearPointer();
- Xvoid ClearRegion();
- Xlong ClearRectRegion();
- Xvoid ClearScreen();
- Xvoid ClipBit();
- Xvoid Close();
- Xvoid CloseDevice();
- Xvoid CloseFont();
- Xvoid CloseLibrary();
- Xvoid CloseScreen();
- Xvoid CloseWindow();
- Xshort CloseWorkBench();
- Xvoid CMove();
- Xshort CmpTime();
- Xlong ConcatCList();
- Xlong ConfigBoard();
- Xlong ConfigChain();
- Xlong ConsoleDevice();
- Xlong CopperListInit();
- XcList CopyCList();
- Xvoid CopyMem();
- Xvoid CopyMemQuick();
- Xvoid CopySBitMap();
- Xstruct Layer * CreateBehindLayer();
- XBPTR CreateDir();
- Xstruct MsgPort * CreatePort();
- Xstruct Process * CreateProc();
- Xstruct IOStdReq * CreateStdIO();
- Xstruct Task * CreateTask();
- Xstruct Layer * CreateUpfrontLayer();
- XBPTR CurrentDir();
- Xvoid CurrentTime();
- Xvoid CWait();
- Xlong * DateStamp();
- Xvoid Deallocate();
- Xvoid Debug();
- Xvoid Delay();
- Xshort DeleteFile();
- Xvoid DeleteLayer();
- Xvoid DeletePort();
- Xvoid DeleteStdIO();
- Xvoid DeleteTask();
- Xstruct Process * DeviceProc();
- Xvoid Disable();
- Xvoid DisownBlitter();
- Xshort DisplayAlert();
- Xvoid DisplayBeep();
- Xvoid DisposeRegion();
- Xvoid DoCollision();
- Xlong DoIO();
- Xshort DoubleClick();
- Xvoid Draw();
- Xvoid DrawBorder();
- Xvoid DrawEllipse();
- Xvoid DrawGList();
- Xvoid DrawImage();
- XBPTR DupLock();
- Xvoid Enable();
- Xvoid EndRefresh();
- Xvoid EndRequest();
- Xvoid EndUpdate();
- Xvoid Enqueue();
- Xshort ExNext();
- Xshort Examine();
- Xshort Execute();
- Xvoid Exit();
- Xstruct ConfigDev * FindConfigDev();
- Xstruct Node * FindName();
- Xstruct MsgPort * FindPort();
- Xstruct Resident * FindResident();
- Xstruct SignalSemaphore * FindSemaphore();
- Xstruct Task * FindTask();
- Xchar * FindToolType();
- Xshort Flood();
- Xvoid FlushCList();
- Xvoid Forbid();
- Xvoid FreeBoardMem();
- Xvoid FreeCList();
- Xvoid FreeColorMap();
- Xvoid FreeConfigDev();
- Xvoid FreeCopList();
- Xvoid FreeCprList();
- Xvoid FreeDiskObject();
- Xvoid FreeEntry();
- Xvoid FreeExpansionMem();
- Xvoid FreeFreeList();
- Xvoid FreeGBuffers();
- Xvoid FreeMem();
- Xvoid FreePotBits();
- Xvoid FreeRaster();
- Xvoid FreeRemember();
- Xvoid FreeSignal();
- Xvoid FreeSprite();
- Xvoid FreeSysRequest();
- Xvoid FreeTrap();
- Xvoid FreeVPortCopLists();
- Xvoid FreeWBObject();
- Xlong GetCC();
- Xlong GetCLBuf();
- Xshort GetCLChar();
- Xshort GetCLWord();
- Xstruct ColorMap * GetColorMap();
- Xlong GetCurrentBinding();
- Xstruct Preferences * GetDefPrefs();
- Xstruct DiskObject * GetDiskObject();
- Xshort GetGBuffers();
- Xlong GetIcon();
- Xstruct Message * GetMsg();
- Xstruct Preferences * GetPrefs();
- Xshort GetRGB4();
- Xlong GetScreenData();
- Xshort GetSprite();
- Xstruct WBObject * GetWBObject();
- Xlong IncrCLMark();
- Xshort Info();
- Xvoid InitArea();
- Xvoid InitBitMap();
- Xlong InitCLPool();
- Xvoid InitCode();
- Xvoid InitGMasks();
- Xvoid InitGels();
- Xvoid InitMasks();
- Xvoid InitRastPort();
- Xvoid InitRequester();
- Xvoid InitResident();
- Xvoid InitSemaphore();
- Xvoid InitStruct();
- Xvoid InitTmpRas();
- Xvoid InitVPort();
- Xvoid InitView();
- XBPTR Input();
- Xvoid Insert();
- Xstruct Region * InstallClipRegion();
- Xlong IntuiTextLength();
- Xstruct InputEvent * Intuition();
- Xlong IoErr();
- Xshort IsInteractive();
- Xstruct MenuItem * ItemAddress();
- Xvoid LoadRGB4();
- Xstruct Segment * LoadSeg();
- Xvoid LoadView();
- XBPTR Lock();
- Xvoid LockLayer();
- Xvoid LockLayerInfo();
- Xvoid LockLayerRom();
- Xvoid LockLayers();
- Xstruct DeviceNode * MakeDosNode();
- Xlong MakeFunctions();
- Xstruct Library * MakeLibrary();
- Xvoid MakeScreen();
- Xvoid MakeVPort();
- Xlong MarkCList();
- Xlong MatchToolValue();
- Xvoid ModifyIDCMP();
- Xvoid ModifyProp();
- Xvoid Move();
- Xlong MoveLayer();
- Xvoid MoveScreen();
- Xvoid MoveSprite();
- Xvoid MoveWindow();
- Xvoid MrgCop();
- Xvoid NewList();
- Xvoid NewModifyProp();
- Xstruct Region * NewRegion();
- Xvoid ObtainConfigBinding();
- Xvoid ObtainSemaphore();
- Xvoid ObtainSemaphoreList();
- Xvoid OffGadget();
- Xvoid OffMenu();
- Xvoid OnGadget();
- Xvoid OnMenu();
- XBPTR Open();
- Xlong OpenDevice();
- Xstruct Font * OpenDiskFont();
- Xstruct Font * OpenFont();
- Xvoid OpenIntuition();
- Xstruct Library * OpenLibrary();
- Xstruct MiscResource * OpenResource();
- Xstruct Screen * OpenScreen();
- Xstruct Window * OpenWindow();
- Xshort OpenWorkBench();
- Xvoid OrRectRegion();
- Xlong OrRegionRegion();
- XBPTR Output();
- Xvoid OwnBlitter();
- XBPTR ParentDir();
- Xshort PeekCLMark();
- Xvoid Permit();
- Xvoid PolyDraw();
- Xvoid PrintIText();
- Xlong PutCLBuf();
- Xlong PutCLChar();
- Xlong PutCLWord();
- Xshort PutDiskObject();
- Xlong PutIcon();
- Xvoid PutMsg();
- Xlong PutWBObject();
- Xvoid QBSBlit();
- Xvoid QBlit();
- Xshort RawKeyConvert();
- Xlong Read();
- Xchar ReadExpansionByte();
- Xlong ReadExpansionRom();
- Xshort ReadPixel();
- Xvoid RectFill();
- Xvoid RefreshGadgets();
- Xvoid RefreshGList();
- Xvoid RefreshWindowFrame();
- Xvoid ReleaseConfigBinding();
- Xvoid ReleaseSemaphore();
- Xvoid ReleaseSemaphoreList();
- Xvoid RemConfigDev();
- Xlong RemDevice();
- Xvoid RemFont();
- Xstruct Node * RemHead();
- Xvoid RemIBob();
- Xvoid RemICRVector();
- Xvoid RemIntServer();
- Xlong RemLibrary();
- Xunsigned short RemoveGList();
- Xvoid RemPort();
- Xvoid RemResource();
- Xvoid RemSemaphore();
- Xstruct Node * RemTail();
- Xvoid RemTask();
- Xvoid RemVSprite();
- Xvoid RemakeDisplay();
- Xvoid Remove();
- Xunsigned short RemoveGadget();
- Xshort Rename();
- Xvoid ReplyMsg();
- Xvoid ReportMouse();
- Xshort Request();
- Xvoid RethinkDisplay();
- Xvoid ScreenToBack();
- Xvoid ScreenToFront();
- Xvoid ScrollLayer();
- Xvoid ScrollRaster();
- Xvoid ScrollVPort();
- Xlong Seek();
- Xvoid SendIO();
- Xvoid SetAPen();
- Xvoid SetBPen();
- Xvoid SetCollision();
- Xshort SetComment();
- Xvoid SetCurrentBinding();
- Xshort SetDMRequest();
- Xvoid SetDRMd();
- Xlong SetExcept();
- Xlong SetFont();
- Xlong SetFunction();
- Xlong SetICR();
- Xstruct Interrupt * SetIntVector();
- Xshort SetMenuStrip();
- Xvoid SetPointer();
- Xstruct Preferences * SetPrefs();
- Xshort SetProtection();
- Xvoid SetRast();
- Xvoid SetRGB4();
- Xvoid SetRGB4CM();
- Xlong SetSR();
- Xlong SetSignal();
- Xlong SetSoftStyle();
- Xshort SetTaskPri();
- Xvoid SetWindowTitles();
- Xvoid ShowTitle();
- Xvoid Signal();
- Xlong SizeCList();
- Xshort SizeLayer();
- Xvoid SizeWindow();
- Xvoid SortGList();
- XcList SplitCList();
- XcList SubCList();
- Xvoid SubTime();
- Xvoid SubLibrary();
- Xvoid SumKickData();
- Xlong SuperState();
- Xvoid SwapBitsRastPortClipRect();
- Xvoid SyncSBitMap();
- Xlong Text();
- Xlong TextLength();
- Xlong Translate();
- Xlong UnGetCLChar();
- Xlong UnGetCLWord();
- Xvoid UnLoadSeg();
- Xvoid UnLock();
- Xshort UnPutCLChar();
- Xshort UnPutCLWord();
- Xvoid UnlockLayer();
- Xvoid UnlockLayerInfo();
- Xvoid UnlockLayerRom();
- Xvoid UnlockLayers();
- Xshort UpfrontLayer();
- Xvoid UserState();
- Xshort VBeamPos();
- Xstruct View * ViewAddress();
- Xstruct ViewPort * ViewPortAddress();
- Xshort WBenchToBack();
- Xshort WBenchToFront();
- Xlong Wait();
- Xvoid WaitBOVP();
- Xvoid WaitBlit();
- Xshort WaitForChar();
- Xlong WaitIO();
- Xstruct Message * WaitPort();
- Xvoid WaitTOF();
- Xstruct Layer * WhichLayer();
- Xshort WindowLimits();
- Xvoid WindowToBack();
- Xvoid WindowToFront();
- Xlong Write();
- Xlong WriteExpansionByte();
- Xvoid WritePixel();
- Xvoid WritePotgo();
- Xvoid XorRectRegion();
- Xlong XorRegionRegion();
- END_OF_FILE
- if test 9694 -ne `wc -c <'src/shellfunctions.h'`; then
- echo shar: \"'src/shellfunctions.h'\" unpacked with wrong size!
- fi
- # end of 'src/shellfunctions.h'
- fi
- echo shar: End of archive 1 \(of 4\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 2 3 4 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 4 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
- Mail comments to the moderator at <amiga-request@cs.odu.edu>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-